1. Technical Field
The present invention relates in general to a system and method for forwarding interrupt requests. In particular, the present invention relates to a system and method for receiving interrupt requests from a source device and delaying delivery of the requests to a destination device until the delivery to the destination device of previously received data has been completed.
2. Description of the Related Art
Interrupt requests are a common means of communication between devices in computer systems. An interrupt is sent from a first device to a second device in order for the first device to “get the attention” of the second device before the first device sends instructions and/or data to the second device.
Devices may be connected to each other directly or the devices may be connected to each other through a data bus that connects multiple devices. In some instances, devices exchanging data may be located on two or more different busses; the busses themselves may be connected though a bridge controller. Bridge controllers typically include buffers or queues and are configured to receive and store data from a first device and subsequently send the data to a second device. In high data traffic situations, the bridge may store the data in the buffer and send the data to the destination device on a first-in-first-out basis and/or in response to an availability of the bus(ses) connecting the bridge controller to the destination device.
Interrupt requests typically are routed through direct lines between the devices, even in cases where bridge controllers control the flow of data. In the cases where a bridge (or a similar device) exists, a first device may, for example, transmit data to a second device through a bus or busses and one or more bridges, directly send an interrupt to the second device, and then send instructions (again through the bus or busses and one or more bridges)for the processing of that data. The interrupt may be sent from the first device in order to “get the attention” of the second device and ask the second device to process the data, for example. In many instances, however, the data may be delayed in the bridge and may reach the second device before the forwarding of the data to the second device has been completed. The second device would then receive an interrupt and wait for instructions to process data that the second device has not yet received.
What is needed, therefore, is a system and method that could better manage the delivery of interrupts and data from one device to another. The system and method should provide a way of ensuring the completion of the data delivery to a device prior to sending an interrupt request, whose action depends upon the completion of the data transfer, to the device.